#ifndef AUXILIAIRE_H_
#define AUXILIAIRE_H_

#define BUFFER_SIZE 256
#define INERROR -1

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <unistd.h>

typedef enum {False, True} bool;

typedef enum _acces{Lecture=0, Ecriture} acces;

/*!
 * \brief Lit une ligne de stream en extrait une mot e deux numéros
 *
 * Si on passe un pointeur NULL, la donnée est ignorée.
 *
 * @return INERROR si ne peut pas lire ou le numéro de données lus.
 *
 * @param stream L'entré des données
 * @param outval1 Chaîne de caractères déjà allouée pour sortir le mot
 * @param outval2 Variable pour retourner le premier entier
 * @param outval3 Variable pour retourner le deuxième entier
 */
int read_and_parse( FILE* stream, char* outval1, int* outval2, int* outval3 );

/*!
 * \brief Mon implementation de strtok_r
 */
char* my_strtok_r(char *str, char *separateurs, char **pt);

/*!
 * \brief Retourne un entier aléatoire.
 *
 * @param min désiré (inclusive)
 * @param max désiré (inclusive)
 */
int aleat(int min, int max);

/*!
 * \brief Verifier la position d'un entier dans un tableau
 *
 * @param n Entier analyser
 * @param tableau Le tableau
 * @param taille Taille du tableau
 *
 * @return La position si n appartient à tableau[] ou -1
 */
int position(int n, int *tableau, int taille);

/*!
 *  \brief Enlève le n-ème element du tableau;
 *
 * @param n Indice du numéro à effacer, si n<0, rien est fait
 * @param tableau Le tableau
 * @param taille Taille du tableau
 */
void enleve(int n, int *tableau, int taille);

/*!
 * \brief Ouvre un processus avec arguments arg1 e arg2 et tuyaux in et out
 *
 * TODO finir de commenter
 */
int ouvreProc(FILE** in, FILE **out, char* fileName, char* arg1, char* arg2);

#endif /* AUXILIAIRE_H_ */
